1. Deep L-layer neural network

뉴런네트워크의 뉴런 구조를 나타내기 위한 노테이션을 소개하도록 하겠다. Imgur 그림에서 보여지는 바와 같은 구조의 뉴런 네트워크에서, 레이어의 갯수는 L 이라고 한다. 단, Input layer는 뉴런이 아니므로 포함하지 않으며, 따라서 Output layer와 Hidden layer를 합친 5가 위 그림에서 나타내는 뉴런 네트워크의 L 값이 된다.

각 레이어에 포함된 뉴런의 갯수는 n[1] 과 같이 표현하며, 각 레이어의 값 벡터는 z[1] 으로 표현한다. 따라서, z[1] = w[1]*x + b[1] 로 표현 가능하다.

여기서 w[l] 과 b[l] 은 각, weight 와 bias 벡터 이다.

Imgur 여기서, L이 1인 경우를 Shallow 하다고 하며, 이는 logistic regression과 크게 다를바가 없다. 현재의 모델들과 같이 Layer가 많은 경우를 Deep하다고 한다.

Imgur 따라서, Forward propagation을 할 경우는 위 그림과 같이 표현 가능하다. 1번째 레이어의 값 X1 은
a[0] = {x1, x2, x3} z[1] = w[1]*a[0] +b[1]
a[1] = g1

결과적으로, 최종 결과 y 는 z[L] = w[L]*a[L-1] + b[L] 의 점화식으로 표현 가능하다.

2. Why deep representations?

얼굴 인식과 같이, 비선형적인 주제는 기존 선형 알고리즘에서 쉽게 해결하고 있지 못하던 문제이다.

Imgur

Deep representation 을 소개하기 위해 뒤에서 배울 CNN의 개념을 잠시 차용하도록 한다. CNN에서 각 가장 작은 Pixel set의 결과는 일종의 edge detection 이라고 가정 할 수 있다. 이 결과에 따라, edge만 따진 이미지만 나오게 되며, 이를 가지고 조금 더 큰(하지만 여전히 작은) 부분으로 나눌 수 있다. 이 때, 각 부분이 눈인지 귀, 코 또는 입인지를 구별 가능하다. 이후 다시 해당 나눠진 값들을 합쳐 전체적으로 얼굴인지를 판단 가능하다.

이와 같이, 여러 레이어를 둘수록 Deep representation 에서는 기존에 해결하기 어렵던 문제를 해결 할 수 있다.

Imgur 하지만, 역시 한계는 존재한다. 예시와 같이 xor을 여러번 하는 경우, Circuit model 에서는 O(log n) 만큼의 시간복잡도를 소모하지만, NN에서는 각 뉴런이 input의 갯수만큼 동작하기 때문에, O(2^n) 의 시간 복잡도를 가지게 된다. 이를 해결하기 위해 우리는 Vectorization을 하여야 한다.

3. Forward and backward propagation

Imgur 각 레이어 에서의 Forward 와 Backward propagation 계산은 위와 같다. 즉, Forward는 앞서 말해온 바와 같이 계산하고, Backward는 Forward의 최종 결과값의 loss를 역방향으로 input으로 두어, 계산해 나가게 된다.

Imgur 즉, Forward의 경우 위와 같이 계산 가능하며, 이는 Vector연산으로 할 경우와 차이가 없다.

Imgur Backward 의 경우 위와 같이 연산하게 된다. da[l] 은 이전(l+1) 레이어의 결과 값 이며, 각 dz[l]은 forward와 유사하다, 단, g(x) 대신 이의 역함수인 g`(x) 를 사용하도록 한다.

Imgur

최종적인 형태는 위 그림과 같게 된다.

Imgur 결과적으로 human brain의 뉴런과 유사한(like) 동작을 하게 된다.